package com.vhall.component.entity.room.dto;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.vhall.component.entity.room.vo.RoomsEntityGuoXinVO;
import com.vhall.component.entity.subject.enums.StatusEnum;
import com.vhall.component.framework.common.annotation.ParamName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * @author guoxin.wang
 * @date 2021-06-02 16:19
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class RoomsEntityDTO extends RoomsEntityGuoXinVO implements Serializable {

    private Integer ilId;

    private Integer pageChannelId;

    private String roomId;

    private String subject;

    private Integer accountId;

    private String inavId;

    private String channelId;

    private String nifyChannel;

    private String recordId;

    private LocalDateTime startTime;

    private Integer beginTimeStamp;

    /**
     * 直播介绍
     */
    private String introduction;

    /**
     * 所属列表
     */
    private Integer category;

    /**
     * 封面图片地址
     */
    private String coverImage;

    /**
     * 标签,多个逗号隔开
     */
    private String topics;

    /**
     * 布局>1|为单视频,2|音频+文档,3|文档+视频
     */
    private Integer layout;

    /**
     * 状态>0|待直播/预约,1|直播中,2|直播结束
     */
    private Integer status;

    private Integer isDelete;

    /**
     * 聊天审核 1允许 2阻止
     */
    private Integer messageApproval;

    private LocalDateTime createdAt;

    private LocalDateTime updatedAt;

    private String appId;

    private Integer like;

    private LocalDateTime deletedAt;

    /**
     * 直播类型 1 直播 2 假直播 3 点播
     */
    private Integer liveType;

    /**
     * 暖场类型| 0：图片 1：视频
     */
    private Integer warmType;

    /**
     * 暖场视频id
     */
    private String warmVodId;

    /**
     * 讲师名称
     */
    private String teacherName;

    private LocalDateTime beginLiveTime;

    private LocalDateTime endLiveTime;

    /**
     * 开启文档>0|未开启,1|已开启
     */
    private Integer isOpenDocument;

    /**
     * 房间模式
     */
    private Integer liveMode;

    private Integer messageTotal;

    /**
     * 模式>1|助理模式,0|普通模式
     */
    private Integer mode;
    /**
     * 表情限频
     */
    private Integer giftFrequency;
    /**
     * 房间审核状态
     */
    private Integer auditStatus;

    /**
     * 房间审核备注
     */
    @JsonProperty(value = "audit_note")
    @ParamName(value = "audit_note")
    private String auditNote;


    /**
     * 【标准版本定义】 0:登录1:报名 2:默认 3:白名单
     * 【兴业版本定义】2 全部观看 0 手机号 4 资金账号  5   普通会员、6白银会员、7黄金会员、8铂金会员
     */
    private Integer limitType;

    /**
     * 配置扩展
     */
    private String extend;
    /**
     * 水印模板 id
     */
    private Integer watermarkTempId;

    /**
     * 分享简介
     */
    @JsonProperty(value = "share_introduction")
    @ParamName(value = "share_introduction")
    private String shareIntroduction;

    /**
     * 直播横竖屏 1横 2竖
     */
    @JsonProperty("video_type")
    @ParamName("video_type")
    private Integer videoType;

    /**
     * 曝光海报
     */
    @ParamName("poster_url")
    @JsonProperty("poster_url")
    private String posterUrl;

    /**
     * 设为热点标记位
     * 0 关
     * 1 开
     * <p>
     * {@link StatusEnum}
     */
    @JsonProperty("hot_status")
    @ParamName("hot_status")
    private Integer hotStatus;

    /**
     * 推荐到优理宝首页标记
     * 0 关
     * 1 开
     * <p>
     * {@link StatusEnum}
     */
    @JsonProperty("recommended_status")
    @ParamName("recommended_status")
    private Integer recommendedStatus;

    /**
     * 上下架标记，0 关、没上架，1开、上架
     * <p>
     * {@link StatusEnum}
     */
    @JsonProperty("load_or_unload")
    @ParamName("load_or_unload")
    private Integer loadOrUnload;

    /**
     * 置顶标记
     * 0 关
     * 1 开
     * <p>
     * {@link StatusEnum}
     */
    @JsonProperty("top_status")
    @ParamName("top_status")
    private Integer topStatus;

    /**
     * 预约标记
     * 0 关
     * 1 开
     * <p>
     * {@link StatusEnum}
     */
    @JsonProperty("reservation_status")
    @ParamName("reservation_status")
    private Integer reservationStatus;

    /**
     * 评论标记
     * 0 关
     * 1 开
     * <p>
     * {@link StatusEnum}
     */
    @JsonProperty("comment_status")
    @ParamName("comment_status")
    private Integer commentStatus;

    /**
     * 审核人
     */
    @JsonProperty("reviewer")
    @ParamName("reviewer")
    private Integer reviewer;

    /**
     * 审核人
     */
    @JsonProperty("reviewer_name")
    @ParamName("reviewer_name")
    private String reviewerName;

    /**
     * 上架时间
     */
    @JsonProperty("load_or_unload_at")
    @ParamName("load_or_unload_at")
    private LocalDateTime loadOrUnloadAt;

    /**
     * 置顶时间
     */
    @JsonProperty("top_status_at")
    @ParamName("top_status_at")
    private LocalDateTime topStatusAt;

    /**
     * 点播id
     */
    @ParamName("demand_vod_id")
    @JsonProperty("demand_vod_id")
    private String demandVodId;

    /**
     * 拉流配置ID
     */
    @ParamName("pull_stream_config_id")
    @JsonProperty("pull_stream_config_id")
    private Integer pullStreamConfigId;

    /**
     * 拉流状态 1 拉流开始 2 拉流结束
     */
    @ParamName("pull_stream_status")
    @JsonProperty("pull_stream_status")
    private Integer pullStreamStatus;

    /**
     * 拉流地址
     */
    @ParamName("pull_stream_url")
    @JsonProperty("pull_stream_url")
    private String pullStreamUrl;

}
